/*
 * habitacions.cpp
 *
 *  Created on: 23/04/2012
 *      Author: alumne1asix
 */

#include "habitacio.h"
#include <fstream>
#include <stdio.h>
#include <string.h>
using namespace std;

typedef struct {
	int nHabitacio;
	char aNomDe[200];
	char dataInici[9];
	char dataFi[9];
} t_strg_reserva;

fstream fitxerHabitacions;

list<t_habitacio> demanarLlistaHabitacions(void){
	t_habitacio v;
	list<t_habitacio> llistaHabitacions;
	fitxerHabitacions.open("habitacions.bin", ios::binary|ios::in );
	if (fitxerHabitacions.is_open()){
		fitxerHabitacions.read((char*)&v, sizeof(v));
		while(!fitxerHabitacions.eof() ){

			llistaHabitacions.push_back(v);
			fitxerHabitacions.read((char*)&v, sizeof(v));

		}
	}
	return llistaHabitacions;
}

void afegirHabitacio(t_habitacio habitacio){
	bool trobada;
	long posicio;
	t_habitacio v;

	fitxerHabitacions.open("habitacions.bin", ios::binary | ios::in);
	trobada = false;
	if(fitxerHabitacions.is_open()){
		posicio = fitxerHabitacions.tellg();
		fitxerHabitacions.read((char*)&v, sizeof(v));
		while( !trobada && !fitxerHabitacions.eof() ){
			trobada = v.numHabitacio == habitacio.numHabitacio;
			if(!trobada){
				posicio = fitxerHabitacions.tellg();
				fitxerHabitacions.read((char*)&v, sizeof(v));
			}
		}
		fitxerHabitacions.close();

	}
	/*
	 * En aquest moment 'trobada' em diu si la habitació ja ésa la llista.
	 * En el cas que 'trobada' sigui True, '*iterador' és l'habitació que busco.
	 */

	if(trobada){
		//Substituir:
		fitxerHabitacions.open("habitacions.bin", ios::binary | ios::out| ios::in);
		fitxerHabitacions.seekp(posicio, ios::beg);
		fitxerHabitacions.write((char*)&habitacio, sizeof(habitacio));
		fitxerHabitacions.close();
	}else {
		//Afegir:
		fitxerHabitacions.open("habitacions.bin", ios::binary | ios::out | ios::app);
		fitxerHabitacions.write((char*)&habitacio, sizeof(habitacio));
		fitxerHabitacions.close();
	}
}





